Telegram Group & Telegram Channel
🐍 Хитрая задача на Python: замыкание + nonlocal

📌 Задача:
Напиши функцию counter(start), которая возвращает функцию-счётчик. Каждый вызов этой функции увеличивает значение на 1.

Пример:


c = counter(10)
print(c()) # 11
print(c()) # 12
print(c()) # 13

d = counter(100)
print(d()) # 101
print(c()) # 14 ← работает независимо


🎯 Подвох:
- Нельзя использовать глобальные переменные
- Нужно использовать замыкание
- Без nonlocal — не заработает

Решение:


def counter(start):
count = start
def inner():
nonlocal count
count += 1
return count
return inner

# Проверка
a = counter(5)
print(a()) # 6
print(a()) # 7

b = counter(100)
print(b()) # 101
print(a()) # 8


🧠 Объяснение подвоха:

- counter возвращает функцию, внутри которой count сохраняется в замыкании
- nonlocal нужен, чтобы изменить внешнюю переменную, а не просто читать её
- Каждое замыкание имеет своё независимое состояние

⚠️ Без nonlocal count, Python создаст локальную count внутри inner(), и UnboundLocalError — гарантирован

🛠️ Применяется в:

• Реализации генераторов состояния
• Мини-хранилищах внутри функций
• Кеширующих функциях и декораторах

@python_job_interview



tg-me.com/python_job_interview/1108
Create:
Last Update:

🐍 Хитрая задача на Python: замыкание + nonlocal

📌 Задача:
Напиши функцию counter(start), которая возвращает функцию-счётчик. Каждый вызов этой функции увеличивает значение на 1.

Пример:


c = counter(10)
print(c()) # 11
print(c()) # 12
print(c()) # 13

d = counter(100)
print(d()) # 101
print(c()) # 14 ← работает независимо


🎯 Подвох:
- Нельзя использовать глобальные переменные
- Нужно использовать замыкание
- Без nonlocal — не заработает

Решение:


def counter(start):
count = start
def inner():
nonlocal count
count += 1
return count
return inner

# Проверка
a = counter(5)
print(a()) # 6
print(a()) # 7

b = counter(100)
print(b()) # 101
print(a()) # 8


🧠 Объяснение подвоха:

- counter возвращает функцию, внутри которой count сохраняется в замыкании
- nonlocal нужен, чтобы изменить внешнюю переменную, а не просто читать её
- Каждое замыкание имеет своё независимое состояние

⚠️ Без nonlocal count, Python создаст локальную count внутри inner(), и UnboundLocalError — гарантирован

🛠️ Применяется в:

• Реализации генераторов состояния
• Мини-хранилищах внутри функций
• Кеширующих функциях и декораторах

@python_job_interview

BY Python вопросы с собеседований


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/python_job_interview/1108

View MORE
Open in Telegram


Python вопросы с собеседований Telegram | DID YOU KNOW?

Date: |

The lead from Wall Street offers little clarity as the major averages opened lower on Friday and then bounced back and forth across the unchanged line, finally finishing mixed and little changed.The Dow added 33.18 points or 0.10 percent to finish at 34,798.00, while the NASDAQ eased 4.54 points or 0.03 percent to close at 15,047.70 and the S&P 500 rose 6.50 points or 0.15 percent to end at 4,455.48. For the week, the Dow rose 0.6 percent, the NASDAQ added 0.1 percent and the S&P gained 0.5 percent.The lackluster performance on Wall Street came on uncertainty about the outlook for the markets following recent volatility.

Telegram has exploded as a hub for cybercriminals looking to buy, sell and share stolen data and hacking tools, new research shows, as the messaging app emerges as an alternative to the dark web.An investigation by cyber intelligence group Cyberint, together with the Financial Times, found a ballooning network of hackers sharing data leaks on the popular messaging platform, sometimes in channels with tens of thousands of subscribers, lured by its ease of use and light-touch moderation.Python вопросы с собеседований from us


Telegram Python вопросы с собеседований
FROM USA